//进行axios二次封装
import axios from 'axios'
import { Message } from 'element-ui';
//第一步：利用axios对象的create方法，去创建axios实例(主要配置：基础路径、超时时间)
let request = axios.create({
  //基础路径
  baseURL:'/',
  timeout:5000  //超时时间
})
//第二步 ：request实例添加请求拦截器
request.interceptors.request.use((config)=>{
  //返回一个配置对象
  //config配置对象，有一个 headers属性的请求头，经常给服务端携带公共参数
  return config
})
 
//第三步 request实例添加响应拦截器
request.interceptors.response.use((response)=>{
  //成功的回调
  //简化数据
  return response.data
},
(error)=>{
  //失败的回调：一般处理http网络错误
  //定义一个变量：存储网络错误信息
  let message =''
  let status=error.response.status
  switch(status){
    case 401:
      message ='TOKEN过期'
      break
    case 403:
      message="无权访问"
      break
    case 404:
      message="请求地址错误"
      break
    case 500:
      message ="服务器出现了错误"
      break
    default:
      message="网络出现问题"
      break
  }
  //提示的错误信息
  Message({
    type:'error',
    message
  })
  //这里需要返回一个失败的promise对象来终结
  return Promise.reject(error)
})
 
//对外暴露 
export default request